#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>//基础窗口类
#include<Qstring>

#include<QMediaPlayer>//媒体播放器组件
#include<QAudioOutput>//音频输出组件
//歌词同步
#include <QTextEdit>//显示歌词
#include <QList>//动态数组容器
#include <QPair>//用于存储一对值

#include <QPushButton>

namespace Ui {
//MainWindow是用于管理主窗口的ui元素的类
class MainWindow;
}
QT_END_NAMESPACE
//自定义枚举类型PLAYMODE
enum PLAYMODE
{
    ORDER_MODE,
    RANDOM_MODE,
    CIRCLE_MODE
};

//MainWindow类继承自QMainWindow，表明这是一个主窗口类
class MainWindow : public QMainWindow
{
    Q_OBJECT//添加此宏以启用信号/槽功能

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();
    //构造和析构函数，创建和销毁窗口对象
public slots://槽函数声明
    //处理播放暂停
    void  handlePlaySlot();
    //处理播放模式
    void  handleModeSlot();
    //处理下一首
    void handleNextSlot();
    //处理上一首
    void handlePreSlot();
    //歌词
    void updateLyrics(qint64 position);
private:
    //设置背景
    void setBackGround(const QString &filename);
    //设置按钮样式
    void setButtonStyle(QPushButton*button,const QString &filename);
    //初始化按钮
    void initButton();
    //加载指定的文件夹
    void loadAppointMusicDir(const QString &filepath);
    //播放音乐
    void startPlayMusic();
    //加载歌词
    void loadLyrics(const QString &filePath);
    Ui::MainWindow *ui;
    //私有成员变量
    //音乐播放器
    QMediaPlayer *m_player;//音乐播放器对象
    //qt6
    QAudioOutput *m_audioOutput;//音频输出对象
    //当前播放模式
    PLAYMODE m_mode;
    //音乐文件夹（绝对路径）
    QString m_musicDir;
    //歌词同步
    QTextEdit *lyricsDisplay;
    QList<QPair<qint64, QString>> lyricsList;

};
#endif // MAINWINDOW_H
